package com.diaohaiwen.common.obj.log;

import cn.hutool.core.date.LocalDateTimeUtil;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;

/**
 * @author 刁海文
 * @since 2023/6/28 21:39
 * @Remark SQL日志缓存
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
public class DbLog extends BaseLog<DbLog> {

    /**
     * SQL语句类型（查询，插入，更新，删除）
     */
    private String sqlType;

    /**
     * SQL模版（带?号的原始语句）
     */
    private String sqlTemplate;

    /**
     * SQL参数
     */
    private String sqlParameter;

    /**
     * SQL语句内容（真正可执行的语句）
     */
    private String sqlContent;

    /**
     * SQL语句执行影响行数
     */
    private Integer sqlRowCount;

    /**
     * SQL执行状态
     */
    private String sqlResult;
    /**
     * 请求时间;
     */
    private LocalDateTime requestTime;
    /**
     * 响应时间;
     */
    private LocalDateTime responseTime;

    /**
     * 消耗时间（毫秒）
     */
    private Double elapsed;

    public void computeElapsed() {
        this.elapsed = LocalDateTimeUtil.between(requestTime, responseTime, ChronoUnit.NANOS) / 1000000.0;
    }


}
